#ifndef MAINWINDOW_HPP
#define MAINWINDOW_HPP

/*! \file mainwindow.hpp
 *
 *  \brief Definicja klasy MainWindow.
 *
 *  Plik zawiera definicję klasy MainWindow. Obiekt
 *  tej klasy zapewnia aplikacji okno główne.
 *
 *  \author Karol Kurpanik
 *  \date 2010.04.04
 *  \version 2.20.13
 */

#include <QDesktopServices>
#include <QFileDialog>
#include <QMainWindow>
#include <QMessageBox>

#include "data.hpp"
#include "newstyle.hpp"
#include "setlabels.hpp"
#include "xmlreader.hpp"
#include "xmlwriter.hpp"

namespace Ui {
    class MainWindow;
}

/*! \class MainWindow
 *
 * \brief Klasa modelująca główne okno aplikacji.
 */
class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();

    Data *ZbiorDanych;
    BibStyle *bs;

private:
    Ui::MainWindow *ui;
    SetLabels *wlabels;
    NewStyle *wstyle;
    vector<Graph*> ListOfCharts;
    Labels *labels;

private slots:
    /*!
     * \brief New Library
     */
    void on_actionNew_Library_triggered();
    void on_pushButton_9_clicked();
    void on_actionUser_Manual_triggered();
    void on_actionAbout_XViz_triggered();
    void on_comboBox_4_activated(int index);
    void on_checkBox_clicked();
    void on_comboBox_3_activated(int index);
    void on_actionExit_triggered();
    void on_actionOpen_file_triggered();
    void on_pushButton_8_clicked();
    void on_pushButton_6_clicked();
    void on_pushButton_11_clicked();
    void on_listWidget_clicked(QModelIndex index);
    void on_pushButton_5_clicked();
    void on_comboBox_activated(int index);
    void showAddLabelDialog();
    void showNewStyleDialog();
    void getChartConf(Labels* lab);
    void getNewStyle(ChartStyle* st);

signals:
    void sendChartConf(Labels* lab);
};

#endif // MAINWINDOW_HPP
